Messaging is a store and forward, asynchronous message transfer system whose basic purpose is to allow applications to communicate without requiring that the origin and the destination applications be active simultaneously. The system stores the messages when necessary and delivers the information when resources become available. A first example of messaging is electronic mail, e.g., X.400 message handling system and simple mail transfer protocol (SMTP). In today's world of client/server computing the requirements for business solutions based on messaging has broadened and deepened way beyond basic electronic mail: workflow computing, mobile messaging, transactional messaging, object messaging, data replication services are emerging technologies that are all built on the messaging style of program-to-program communication. New requirements on messaging systems have also been driven by the need for programs to interoperate across disparate operating system platforms and networks (wired and wireless).
Messaging has become a fundamental technology in providing program-to-program communication. Various companies have developed message-oriented middleware (MOM) that supplies a flexible messaging infrastructure. IBM is delivering a commercial strength messaging system,
MQSeries, that provides assured, once only message delivery, and message recoverability. Other known MOM products are: Communications Integrator (Covia), ezBridge (Systems Strategies), and Message Express (Horizon Strategies), to name some.
MOM allows general purpose messages to be exchanged between programs using message queues. Applications communicate over networks by simply putting messages in queues and getting messages from queues. MOM's messaging and queueing (MQ) allow programs to communicate across a network without being linked by a private, dedicated, logical connection. Messages are stored at intermediate nodes in the network until the MQ system is ready to forward them. At their final destination, they are held in queues until the target programs are ready to retrieve and process them. At each node in the network there is a queue manager (QM) that insures that messages reach their target queues and provides the MQ services to applications.
MOM enabled programs do not talk to each other directly, so either program can be busy, unavailable, or simply not running at the same time. A program can decide when it wants to retrieve a message of its queue. In case of wireless communications one could even collect all outgoing information in a queue and submit it to a server when the user gets to a phone or to an office local-area-network (LAN). Incoming mail could be stored in a queue until a link, e.g., a wireless link, to the addressee can be established. MQ is very versatile. One can use it to create one-to-many and/or many-to-one relationships, i.e., a single queue can be serviced by several applications and/or many applications can put messages into the same queue.
MOM is a key piece of middleware that is essential for facilitating the development of distributed business applications. MOM typically provides a very simple high-level application programming interface (API) to its services. Most MOM products make available this API on multiple operating system platforms. This greatly simplifies the development of distributed applications that run on different platforms and communicate over a network. The applications only have to be written to a single interface. Furthermore, MOM hides all the communications from the applications. They operate in ignorance of the network and bear no part of the communication burden such as link establishment, management of the links, etc.
The MQ services offered by MOM are an ideal infrastructure on top of which to build an electronic mail system. A mail system consist of a collection of mail servers that accept mail messages and handle their delivery to the recipients. A mail server is like a post office: mail for a local recipient is delivered to its electronic mailbox and mail addressed to remote recipients is forwarded to other mail servers for further delivery. The mail may visit several mail servers before being delivered. The process of forwarding mail for an intended remote recipient to another mail server is called mail redirection.
To be efficient, a mail system using the MOM's MQ services for transporting its mail should exhibit the following qualities: a message on its way to its recipients should be duplicated only when necessary, i.e., only at the nodes in the MQ network where the routes to recipients diverge, and only one copy of a message should be delivered to each of its recipients.
A mail server handles mail addressed to several recipients by delivering the mail message to the mail box of all the recipient that are local and forwarding the mail to each of the mail servers that are responsible for taking care of the mail for the remote recipients. The routes in the MQ network leaving from the forwarding mail server and leading to all the servers to which the mail has to be forwarded may have common initial sections. Even though the mail is forwarded to different mail servers, only one mail message should be transmitted on the common initial sections of the routes. Duplication of messages should occur only when necessary, i.e., when routes diverge, to avoid an unnecessary loading of the network. Overloading the network needs to be avoided in particular in the situation where the network is heavily used.
Several copies of a message can reach a recipient if the message was redirected to the recipient by several mail servers. Multiple redirection of a given mail message to the same recipient should not happen in a properly designed and configured mail system. It would lead to an unnecessary duplication of messages that overloads the network and wastes computing power and storage at the mail servers. The recipient would have the chore of eliminating duplicate messages unless the receiving mail server get burdened with this task.
It is an object of the present invention to provide a method and appropriate means for preventing all unnecessary duplications of messages in the MQ network and for performing redirection of mail messages only when necessary in a mail system using MOM's MQ services for transport. The method and means described in the present invention thus reduce the load on the mail servers and the message queueing network. They have the further advantage of providing this efficient use of the MQ network for mail transport without requiring the MQ system to have access to the mail directory.